<?php
/**在用户购买课程之后根据提供的手机号判断是否要给该手机号开通
 * Created by PhpStorm.
 * User: yaosj
 * Date: 15-7-10
 * Time: 下午1:38
 */

class OpenToMobileUser implements  iController {

    public function output($queryArgs) {
        //user_id,user_token,mobile_num,mobile_token,course_id
        //验证用户的id和token
        //验证手机号和验证码
        //看用户是否有手机号，如果有，就什么都不做，返回；
        //如果用户没有手机号且传过来的手机号之前不存在，则绑定手机号，返回；
        //如果用户没有手机号且传过来的手机号之前存在，
             //看用户之前是否有关联手机号，有，什么都不做，返回；
             //没有，设置关联手机号，给关联手机号开通课程，返回；

        //验证用户信息
        if (!isset($queryArgs['mobile_num']) || empty($queryArgs['course_id']) || !is_numeric($queryArgs['course_id']))
            return genOutput(1000);

        //用户信息
        if(validateUser($queryArgs) !== 1)
            return genOutput(1200);

        //验证手机验证码
        if (!validatePhone($queryArgs['mobile_num'])
            || !($memValue = cacheGet('phone:'.$queryArgs['mobile_num']))) {
            return genOutput(1109); //参数错误
        }

        if (!isset($queryArgs['mobile_token']) || !validateCode($queryArgs['mobile_token'])
            || $memValue['code'] != $queryArgs['mobile_token']) {
            return genOutput(1101); //参数错误
        }

        //更新cache，标记该手机号已经验证OK
        $memValue['validated'] = true;
        cacheSet('phone:'.$queryArgs['mobile_num'], $memValue, 10*60);

        //看用户是否有手机号，如果有，就什么都不做，返回；
        global $uddb ,$cmsdb;
        $userId = intval($queryArgs['user_id']);
        $sql = "SELECT *  FROM user_auth_info WHERE id={$userId}";
        $originUser = $uddb->getRow($sql); //原用户

        if (empty($originUser))
            return genOutput(1003);//用户不存在，直接返回
        if (!empty($originUser -> phone))
            return genOutput(1);   //用户有手机号，直接返回

        //如果用户没有手机号且传过来的手机号之前不存在，则绑定手机号，返回；
        $phoneNum = $queryArgs['mobile_num'];
        $sql = "SELECT * FROM user_auth_info WHERE phone={$phoneNum}";
        $phoneUser = $uddb -> getRow($sql);
        if (empty($phoneUser)) {
            $uddb -> update('user_auth_info',array('phone' => $phoneNum), array('id' => $userId));
            return genOutput(1);
        } else {
            if (!empty($originUser -> related_phone)) {
                //看用户之前是否有关联手机号，有，什么都不做，返回；
                return genOutput(1);
            } else {
                //没有，设置关联手机号，给关联手机号开通课程，返回；
                $uddb->update('user_auth_info',array('related_phone' => $phoneNum), array('id' => $userId));
                $cmsdb->insert('relation_user_product', array(
                    'user_id' => $phoneUser -> ID,
                    'product_id' => $queryArgs['course_id'],
                    'order_id' => 0,
                    'order_time' => date('y-m-d H:i:s'),
                    'product_type' => 'zhiboke',
                    'channel' => 2 //标记开通类型为手机号关联
                ));

                //更新缓存人数
                updateCoursePurchasedPersons($queryArgs['course_id'], 1);

                return genOutput(1);
            }

        }
    }
}